.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "SYNCTHING" "1" "Nov 05, 2025" "v2.0.0" "Syncthing"
.SH NAME
syncthing \- Syncthing
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
.sp
.EX
syncthing [serve]
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-allow\-newer\-config] [\-\-audit] [\-\-auditfile=<file|\-|\-\->]
          [\-\-db\-maintenance\-interval=<interval>]
          [\-\-db\-delete\-retention\-interval=<interval>]
          [\-\-gui\-address=<address>] [\-\-gui\-apikey=<key>]
          [\-\-log\-level=<level>] [\-\-log\-file=<filename>]
          [\-\-log\-max\-old\-files=<num>] [\-\-log\-max\-size=<num>]
          [\-\-log\-format\-timestamp=<format>] [\-\-no\-log\-format\-level\-string]
          [\-\-log\-format\-level\-syslog]
          [\-\-no\-browser] [\-\-no\-console]
          [\-\-no\-port\-probing] [\-\-no\-restart] [\-\-no\-upgrade]
          [\-\-paused] [\-\-unpaused]
          [\-\-version] [\-\-help] [\-\-debug\-*]

syncthing cli
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-gui\-address=<address>] [\-\-gui\-apikey=<key>]
          [\-\-help]
          <command> [command options...] [arguments...]

syncthing browser
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-help]

syncthing decrypt (\-\-to=<dir> | \-\-verify\-only)
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-password=<pw>] [\-\-folder\-id=<id>] [\-\-token\-path=<file>]
          [\-\-continue] [\-\-verbose] [\-\-help]
          <path>

syncthing device\-id
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-help]

syncthing generate
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-gui\-user=<username>] [\-\-gui\-password=<password|\->]
          [\-\-no\-port\-probing]
          [\-\-help]

syncthing paths
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-help]

syncthing upgrade
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-check\-only] [\-\-from=<url>]
          [\-\-help]

syncthing version
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-help]

syncthing debug <command>
          [\-\-home=<dir> | \-\-config=<dir> \-\-data=<dir>]
          [\-\-help]
.EE
.UNINDENT
.UNINDENT
.SH DESCRIPTION
.sp
Syncthing lets you synchronize your files bidirectionally across multiple
devices. This means the creation, modification or deletion of files on one
machine will automatically be replicated to your other devices. We believe your
data is your data alone and you deserve to choose where it is stored. Therefore
Syncthing does not upload your data to the cloud but exchanges your data across
your machines as soon as they are online at the same time.
.sp
The \fBsyncthing\fP core application is a command\-line program which usually runs
in the background and handles the synchronization. It provides a built\-in, HTML
and JavaScript based user interface to be controlled from a web browser. This
frontend communicates with the core application through some HTTP APIs, which
other apps like graphical system integration helpers can use as well, for
greatest flexibility. A link to reach the GUI and API is printed among the first
few log messages.
.SH COMMON OPTIONS
.INDENT 0.0
.TP
.B \-\-home=<dir>, \-H <dir> ($STHOMEDIR)
Set common configuration and data directory. The default configuration
directory is \fB$XDG_STATE_HOME/syncthing\fP or
\fB$HOME/.local/state/syncthing\fP (Unix\-like),
\fB$HOME/Library/Application Support/Syncthing\fP (Mac) and
\fB%LOCALAPPDATA%\eSyncthing\fP (Windows).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-config=<dir>, \-C <dir> ($STCONFDIR)
Set configuration directory. Alternative to \fB\-\-home\fP and must be used
together with \fB\-\-data\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-data=<dir>, \-D <dir> ($STDATADIR)
Set data (e.g. database) directory. Alternative to \fB\-\-home\fP and must be used
together with \fB\-\-config\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-help, \-h
Show help text about command line usage.  Context\-sensitive depending on the
given subcommand.
.UNINDENT
.SH SERVE OPTIONS
.INDENT 0.0
.TP
.B \-\-allow\-newer\-config ($STALLOWNEWERCONFIG)
Try loading a config file written by a newer program version, instead of
failing immediately.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-audit ($STAUDIT)
Write events to timestamped file \fBaudit\-YYYYMMDD\-HHMMSS.log\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-auditfile=<file|\-|\-\-> ($STAUDITFILE)
Use specified file or stream (\fB\(dq\-\(dq\fP for stdout, \fB\(dq\-\-\(dq\fP for stderr) for
audit events, rather than the timestamped default file name.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-db\-maintenance\-interval=<interval> ($STDBMAINTENANCEINTERVAL)
Database maintenance interval – internal database maintenance routines
run this often. The format is that of a Go duration string (see
\X'tty: link https://pkg.go.dev/time#ParseDuration'\fI\%https://pkg.go.dev/time#ParseDuration\fP\X'tty: link').
.UNINDENT
.INDENT 0.0
.TP
.B \-\-db\-delete\-retention\-interval=<interval> ($STDBDELETERETENTIONINTERVAL)
Database deleted item retention interval – deleted items are forgotten
from the database after this interval. The format is that of a Go duration
string (see \X'tty: link https://pkg.go.dev/time#ParseDuration'\fI\%https://pkg.go.dev/time#ParseDuration\fP\X'tty: link').
.UNINDENT
.INDENT 0.0
.TP
.B \-\-gui\-address=<address> ($STGUIADDRESS)
Override GUI listen address. Set this to an address (\fB0.0.0.0:8384\fP)
or a URL (\fBhttp://0.0.0.0:8384\fP). Supported schemes are \fBhttp\fP for
plain HTTP, \fBhttps\fP for HTTP over TLS, \fBunix\fP for plain Unix sockets
or \fBunixs\fP for TLS over Unix sockets. A Unix socket could look like this:
\fBunix:///run/syncthing/syncthing.socket\fP (notice the three slashes: two
as part of the URL structure, one to specify an absolute path).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-gui\-apikey=<string> ($STGUIAPIKEY)
Override the API key needed to access the GUI / REST API.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-file=<filename> ($STLOGFILE)
Set destination filename for logging (use \fB\(dq\-\(dq\fP for stdout, which is the
default option).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-level=<level> ($STLOGLEVEL)
Set the log level for all packages. Valid levels are DEBUG, INFO, WARN,
and ERROR.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-max\-old\-files=<num> ($STLOGMAXOLDFILES)
Number of old files to keep (zero to keep only current).  Applies only when
log rotation is enabled through \fB\-\-log\-max\-size\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-max\-size=<num> ($STLOGMAXSIZE)
Maximum size in bytes of any log file (zero to disable log rotation).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-log\-format\-timestamp=<format> ($STLOGFORMATTIMESTAMP)
Format for timestamp, set to empty to disable timestamps. The format is that
of the Go time formatter (see \X'tty: link https://pkg.go.dev/time#Layout'\fI\%https://pkg.go.dev/time#Layout\fP\X'tty: link').
.UNINDENT
.INDENT 0.0
.TP
.B \-\-[no\-]log\-format\-level\-string ($STLOGFORMATLEVELSTRING)
Whether to include level string (e.g. “INF”) in log line.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-[no\-]log\-format\-level\-syslog ($STLOGFORMATLEVELSYSLOG)
Whether to include level as syslog prefix (e.g. “<6>”) in log line.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-no\-browser ($STNOBROWSER)
Do not start a browser.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-no\-console ($STNOCONSOLE)
Hide the console window. (On Windows only)
.UNINDENT
.INDENT 0.0
.TP
.B \-\-no\-port\-probing ($STNOPORTPROBING)
Don’t try to find unused random ports for the GUI and listen address when
generating an initial configuration / starting for the first time.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-no\-restart ($STNORESTART)
Do not restart Syncthing when it exits. The monitor process will still run
to handle crashes and writing to logfiles (if configured to).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-no\-upgrade ($STNOUPGRADE)
Disable automatic upgrades.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-paused ($STPAUSED)
Start with all devices and folders paused.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-unpaused ($STUNPAUSED)
Start with all devices and folders unpaused.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-version
Show the current version information, then exit.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-debug\-*
Several debug options exist. See \fBsyncthing serve \-\-help\fP for the flags
that apply to your version.
.UNINDENT
.SH DECRYPT OPTIONS
.INDENT 0.0
.TP
.B \-\-to=<dir>
Destination directory where files should be stored after decryption.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-verify\-only
Don’t write decrypted files to disk (but verify plaintext hashes).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-password=<pw> ($FOLDER_PASSWORD)
Folder password for decryption / verification.  Can be passed through the
\fBFOLDER_PASSWORD\fP environment variable instead to avoid recording in a
shell’s history buffer or sniffing from the running processes list.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-folder\-id=<id>
Folder ID of the encrypted folder, if it cannot be determined automatically.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-token\-path=<file>
Path to the token file within the folder (used to determine folder ID).
.UNINDENT
.INDENT 0.0
.TP
.B \-\-continue
Continue processing next file in case of error, instead of aborting.
.UNINDENT
.SH GENERATE OPTIONS
.INDENT 0.0
.TP
.B \-\-gui\-password=<password|\->
Specify new GUI authentication password, to update the config file.  Read
from the standard input stream if only a single dash (\fB\-\fP) is given.  A
plaintext password is hashed before writing to the config file, but an
already bcrypt\-hashed input is stored verbatim.  As a special case, giving
the existing password hash as password will leave it untouched.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-gui\-user=<username>
Specify new GUI authentication user name, to update the config file.
.UNINDENT
.SH UPGRADE OPTIONS
.INDENT 0.0
.TP
.B \-\-check\-only
Do not upgrade, only indicate whether an upgrade is available.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-from=<url>
Upgrade to the Syncthing version available from loading the package at
the given URL.
.UNINDENT
.SH EXIT CODES
.INDENT 0.0
.TP
.B 0
Success / Shutdown
.TP
.B 1
Error
.TP
.B 2
Upgrade not available
.TP
.B 3
Restarting
.TP
.B 4
Upgrading
.UNINDENT
.sp
Exit codes over 125 are usually returned by the shell/binary loader/default
signal handler. Exit codes over 128+N on Unix usually represent the signal which
caused the process to exit. For example, \fB128 + 9 (SIGKILL) = 137\fP\&.
.SH SUBCOMMANDS
.sp
The command line syntax supports different modes of operation through
several subcommands, specified as the first argument.  If omitted, the
default \fBserve\fP is assumed.
.sp
The initial setup of a device ID and default configuration can be called
explicitly with the \fBgenerate\fP subcommand.  It can also update the configured
GUI authentication credentials, without going through the REST API.  An existing
device certificate is left untouched.  If the configuration file already exists,
it is validated and updated to the latest configuration schema, including adding
default values for any new options.
.sp
The \fBdecrypt\fP subcommand is used in conjunction with untrusted (encrypted)
devices, see the relevant section on \fI\%decryption\fP for
details.  It does not depend on Syncthing to be running, but works on offline
data.
.sp
To work with the REST API for debugging or automating things in Syncthing, the
\fBcli\fP subcommand provides easy access to individual features.  It basically
saves the hassle of handling HTTP connections and API authentication.
.sp
The available subcommands are grouped into several nested hierarchies and some
parts dynamically generated from the running Syncthing instance.  On every
level, the \fB\-\-help\fP option lists the available properties, actions and
commands for the user to discover interactively.  The top\-level groups are:
.INDENT 0.0
.TP
.B config
Access the live configuration in a running instance over the REST API to
retrieve (get) or update (set) values in a fine\-grained way.  The hierarchy
is based on the same structure as used in the JSON / XML representations.
.TP
.B show
Show system properties and status of a running instance.  The output is
passed on directly from the REST API response and therefore requires parsing
JSON format.
.TP
.B operations
Control the overall program operation such as restarting or handling
upgrades, as well as triggering some actions on a per\-folder basis.  Can
also configure the default ignore patterns from a plain text ignore file.
.TP
.B errors
Examine pending error conditions that need attention from the user, or
acknowledge (clear) them.
.TP
.B debug
Various tools to aid in diagnosing problems or collection information for
bug reports.  Some of these commands access the database directly and can
therefore only work when Syncthing is not running.
.TP
.B \fB\-\fP (a single dash)
Reads subsequent commands from the standard input stream, without needing to
call the \fBsyncthing cli\fP command over and over.  Exits on any invalid
command or when EOF (end\-of\-file) is received.
.UNINDENT
.SH PROXIES
.sp
Syncthing can use a SOCKS, HTTP, or HTTPS proxy to talk to the outside
world. The proxy is used for outgoing connections only \- it is not possible
to accept incoming connections through the proxy. The proxy is configured
through the environment variable \fBall_proxy\fP\&. Somewhat unusually, this
variable must be named in lower case \- it is not “ALL_PROXY”. For
example:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
$ export all_proxy=socks://192.0.2.42:8081
.EE
.UNINDENT
.UNINDENT
.SH DEVELOPMENT SETTINGS
.sp
The following environment variables modify Syncthing’s behavior in ways that
are mostly useful for developers. Use with care.
If you start Syncthing from within service managers like systemd or supervisor,
path expansion may not be supported.
.INDENT 0.0
.TP
.B STTRACE
Used to increase the debugging verbosity in specific facilities,
generally mapping to a Go package. Enter a comma\-separated string of
facilities to trace: \fBapi,beacon\fP\&. Optionally, a log level can be
given per facility to specify something other than DEBUG:
\fBapi:WARN,beacon:ERR\fP, potentially overriding a global \fB\-\-log\-level\fP
adjustment.
.sp
The valid facility strings are listed below; additionally, \fBsyncthing
serve \-\-help\fP always outputs the most up\-to\-date list.
.INDENT 7.0
.TP
.B api
REST API
.TP
.B beacon
Multicast and broadcast discovery
.TP
.B config
Configuration loading and saving
.TP
.B connections
Connection handling
.TP
.B db/sqlite
SQLite database
.TP
.B dialer
Dialing connections
.TP
.B discover
Remote device discovery
.TP
.B events
Event generation and logging
.TP
.B fs
Filesystem access
.TP
.B main
Main package
.TP
.B model
The root hub
.TP
.B nat
NAT discovery and port mapping
.TP
.B pmp
NAT\-PMP discovery and port mapping
.TP
.B protocol
The BEP protocol
.TP
.B relay/client
Relay client
.TP
.B scanner
File change detection and hashing
.TP
.B stun
STUN functionality
.TP
.B syncthing
Main run facility
.TP
.B upgrade
Binary upgrades
.TP
.B upnp
UPnP discovery and port mapping
.TP
.B ur
Usage reporting
.TP
.B versioner
File versioning
.TP
.B watchaggregator
Filesystem event watcher
.UNINDENT
.TP
.B STLOCKTHRESHOLD
Used for debugging internal deadlocks; sets debug sensitivity. Use only
under direction of a developer.
.TP
.B STVERSIONEXTRA
Add extra information to the version string in logs and the version line
in the GUI. Can be set to the name of a wrapper or tool controlling
syncthing to communicate this to the end user.
.TP
.B GOMAXPROCS
Set the maximum number of CPU cores to use. Defaults to all available CPU
cores.
.TP
.B GOGC
Percentage of heap growth at which to trigger GC. Default is 100. Lower
numbers keep peak memory usage down, at the price of CPU usage
(i.e. performance).
.TP
.B LOGGER_DISCARD
Hack to completely disable logging, for example when running benchmarks.
Set to any nonempty value to use it.
.UNINDENT
.SH SEE ALSO
.sp
\fBsyncthing\-config(5)\fP, \fBsyncthing\-stignore(5)\fP,
\fBsyncthing\-device\-ids(7)\fP, \fBsyncthing\-security(7)\fP,
\fBsyncthing\-networking(7)\fP, \fBsyncthing\-versioning(7)\fP,
\fBsyncthing\-faq(7)\fP
.SH AUTHOR
The Syncthing Authors
.SH COPYRIGHT
2014-2025, The Syncthing Authors
.\" Generated by docutils manpage writer.
.
